home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 February: Tool Chest / Dev.CD Feb 94.toast / Tool Chest / Development Platforms / MPW Related / MPW Interfaces / AIncludes / SANEMacs.a < prev    next >
Encoding:
Text File  |  1993-09-17  |  27.6 KB  |  1,566 lines  |  [TEXT/MPS ]

  1. ;    File:        SANEMacs.a
  2. ;
  3. ;    Copyright:    © 1983-1993 by Apple Computer, Inc.
  4. ;                All rights reserved.
  5. ;
  6. ;    Version:    System 7.1 for ETO #11
  7. ;    Created:    Tuesday, March 30, 1993 18:00
  8. ;
  9. ;___________________________________________________________________________
  10.  
  11. FOADD            EQU         $0000                    ; add
  12. FOSUB            EQU         $0002                    ; subtract
  13. FOMUL            EQU         $0004                    ; multiply
  14. FODIV            EQU         $0006                    ; divide
  15. FOCMP            EQU         $0008                    ; compare, no exception from unordered
  16. FOCPX            EQU         $000A                    ; compare, signal invalid if unordered
  17. FOREM            EQU         $000C                    ; remainder
  18. FOZ2X            EQU         $000E                    ; convert to extended
  19. FOX2Z            EQU         $0010                    ; convert from extended
  20. FOSQRT            EQU         $0012                    ; square root
  21. FORTI            EQU         $0014                    ; round to integral value
  22. FOTTI            EQU         $0016                    ; truncate to integral value
  23. FOSCALB         EQU         $0018                    ; binary scale
  24. FOLOGB            EQU         $001A                    ; binary log
  25. FOCLASS         EQU         $001C                    ; classify
  26. ; UNDEFINED EQU $001E
  27.  
  28. FOSETENV        EQU         $0001                    ; set environment
  29. FOGETENV        EQU         $0003                    ; get environment
  30. FOSETHV         EQU         $0005                    ; set halt vector
  31. FOGETHV         EQU         $0007                    ; get halt vector
  32. FOD2B            EQU         $0009                    ; convert decimal to binary
  33. FOB2D            EQU         $000B                    ; convert binary to decimal
  34. FONEG            EQU         $000D                    ; negate
  35. FOABS            EQU         $000F                    ; absolute
  36. FOCPYSGN        EQU         $0011                    ; copy sign
  37. FONEXT            EQU         $0013                    ; next-after
  38. FOSETXCP        EQU         $0015                    ; set exception
  39. FOPROCENTRY     EQU         $0017                    ; procedure entry
  40. FOPROCEXIT        EQU         $0019                    ; procedure exit
  41. FOTESTXCP        EQU         $001B                    ; test exception
  42. ; UNDEFINED EQU $001D
  43. ; UNDEFINED EQU $001F
  44.  
  45.  
  46. ;———————————————————————————————————————————————————————————
  47. ; Operand format masks.
  48. ;———————————————————————————————————————————————————————————
  49. FFEXT            EQU         $0000                    ; extended -- 80-bit float
  50. FFEXT96            EQU            $0020                    ; extended -- 96-bit float
  51. FFDBL            EQU         $0800                    ; double -- 64-bit float
  52. FFSGL            EQU         $1000                    ; single -- 32-bit float
  53. FFINT            EQU         $2000                    ; integer -- 16-bit integer
  54. FFLNG            EQU         $2800                    ; long int -- 32-bit integer
  55. FFCOMP            EQU         $3000                    ; comp -- 64-bit integer
  56.  
  57. ;———————————————————————————————————————————————————————————
  58. ; Operations: operand addresses should already be on
  59. ; the stack, with the destination address on top. The
  60. ; suffix X, D, S, C, I, or L determines the format of the
  61. ; source operand -- extended, double, single, comp,
  62. ; integer, or long integer, respectively; the destination
  63. ; operand is always extended.
  64. ;———————————————————————————————————————————————————————————
  65.  
  66.  
  67. ;———————————————————————————————————————————————————————————
  68. ; Addition.
  69. ;———————————————————————————————————————————————————————————
  70. ; 80-bit extended format
  71.                 MACRO
  72.                 FADDX
  73.                 MOVE.W        #FFEXT+FOADD,-(SP)
  74.                 _FP68K
  75.                 ENDM
  76.  
  77.                 MACRO
  78.                 FADDD
  79.                 MOVE.W        #FFDBL+FOADD,-(SP)
  80.                 _FP68K
  81.                 ENDM
  82.  
  83.                 MACRO
  84.                 FADDS
  85.                 MOVE.W        #FFSGL+FOADD,-(SP)
  86.                 _FP68K
  87.                 ENDM
  88.  
  89.                 MACRO
  90.                 FADDC
  91.                 MOVE.W        #FFCOMP+FOADD,-(SP)
  92.                 _FP68K
  93.                 ENDM
  94.  
  95.                 MACRO
  96.                 FADDI
  97.                 MOVE.W        #FFINT+FOADD,-(SP)
  98.                 _FP68K
  99.                 ENDM
  100.  
  101.                 MACRO
  102.                 FADDL
  103.                 MOVE.W        #FFLNG+FOADD,-(SP)
  104.                 _FP68K
  105.                 ENDM
  106.  
  107. ; 96-bit extended format
  108.                 MACRO
  109.                 FADDX96
  110.                 MOVE.W        #FFEXT96+FOADD,-(SP)
  111.                 _FP68K
  112.                 ENDM
  113.  
  114.                 MACRO
  115.                 FADDD96
  116.                 MOVE.W        #FFDBL+FFEXT96+FOADD,-(SP)
  117.                 _FP68K
  118.                 ENDM
  119.  
  120.                 MACRO
  121.                 FADDS96
  122.                 MOVE.W        #FFSGL+FFEXT96+FOADD,-(SP)
  123.                 _FP68K
  124.                 ENDM
  125.  
  126.                 MACRO
  127.                 FADDC96
  128.                 MOVE.W        #FFCOMP+FFEXT96+FOADD,-(SP)
  129.                 _FP68K
  130.                 ENDM
  131.  
  132.                 MACRO
  133.                 FADDI96
  134.                 MOVE.W        #FFINT+FFEXT96+FOADD,-(SP)
  135.                 _FP68K
  136.                 ENDM
  137.  
  138.                 MACRO
  139.                 FADDL96
  140.                 MOVE.W        #FFLNG+FFEXT96+FOADD,-(SP)
  141.                 _FP68K
  142.                 ENDM
  143.  
  144. ;———————————————————————————————————————————————————————————
  145. ; Subtraction.
  146. ;———————————————————————————————————————————————————————————
  147. ; 80-bit extended format
  148.                 MACRO
  149.                 FSUBX
  150.                 MOVE.W        #FFEXT+FOSUB,-(SP)
  151.                 _FP68K
  152.                 ENDM
  153.  
  154.                 MACRO
  155.                 FSUBD
  156.                 MOVE.W        #FFDBL+FOSUB,-(SP)
  157.                 _FP68K
  158.                 ENDM
  159.  
  160.                 MACRO
  161.                 FSUBS
  162.                 MOVE.W        #FFSGL+FOSUB,-(SP)
  163.                 _FP68K
  164.                 ENDM
  165.  
  166.                 MACRO
  167.                 FSUBC
  168.                 MOVE.W        #FFCOMP+FOSUB,-(SP)
  169.                 _FP68K
  170.                 ENDM
  171.  
  172.                 MACRO
  173.                 FSUBI
  174.                 MOVE.W        #FFINT+FOSUB,-(SP)
  175.                 _FP68K
  176.                 ENDM
  177.  
  178.                 MACRO
  179.                 FSUBL
  180.                 MOVE.W        #FFLNG+FOSUB,-(SP)
  181.                 _FP68K
  182.                 ENDM
  183.  
  184. ; 96-bit extended format
  185.                 MACRO
  186.                 FSUBX96
  187.                 MOVE.W        #FFEXT96+FOSUB,-(SP)
  188.                 _FP68K
  189.                 ENDM
  190.  
  191.                 MACRO
  192.                 FSUBD96
  193.                 MOVE.W        #FFDBL+FFEXT96+FOSUB,-(SP)
  194.                 _FP68K
  195.                 ENDM
  196.  
  197.                 MACRO
  198.                 FSUBS96
  199.                 MOVE.W        #FFSGL+FFEXT96+FOSUB,-(SP)
  200.                 _FP68K
  201.                 ENDM
  202.  
  203.                 MACRO
  204.                 FSUBC96
  205.                 MOVE.W        #FFCOMP+FFEXT96+FOSUB,-(SP)
  206.                 _FP68K
  207.                 ENDM
  208.  
  209.                 MACRO
  210.                 FSUBI96
  211.                 MOVE.W        #FFINT+FFEXT96+FOSUB,-(SP)
  212.                 _FP68K
  213.                 ENDM
  214.  
  215.                 MACRO
  216.                 FSUBL96
  217.                 MOVE.W        #FFLNG+FFEXT96+FOSUB,-(SP)
  218.                 _FP68K
  219.                 ENDM
  220.  
  221. ;———————————————————————————————————————————————————————————
  222. ; Multiplication.
  223. ;———————————————————————————————————————————————————————————
  224. ; 80-bit extended format
  225.                 MACRO
  226.                 FMULX
  227.                 MOVE.W        #FFEXT+FOMUL,-(SP)
  228.                 _FP68K
  229.                 ENDM
  230.  
  231.                 MACRO
  232.                 FMULD
  233.                 MOVE.W        #FFDBL+FOMUL,-(SP)
  234.                 _FP68K
  235.                 ENDM
  236.  
  237.                 MACRO
  238.                 FMULS
  239.                 MOVE.W        #FFSGL+FOMUL,-(SP)
  240.                 _FP68K
  241.                 ENDM
  242.  
  243.                 MACRO
  244.                 FMULC
  245.                 MOVE.W        #FFCOMP+FOMUL,-(SP)
  246.                 _FP68K
  247.                 ENDM
  248.  
  249.                 MACRO
  250.                 FMULI
  251.                 MOVE.W        #FFINT+FOMUL,-(SP)
  252.                 _FP68K
  253.                 ENDM
  254.  
  255.                 MACRO
  256.                 FMULL
  257.                 MOVE.W        #FFLNG+FOMUL,-(SP)
  258.                 _FP68K
  259.                 ENDM
  260.  
  261. ; 96-bit extended format
  262.                 MACRO
  263.                 FMULX96
  264.                 MOVE.W        #FFEXT96+FOMUL,-(SP)
  265.                 _FP68K
  266.                 ENDM
  267.  
  268.                 MACRO
  269.                 FMULD96
  270.                 MOVE.W        #FFDBL+FFEXT96+FOMUL,-(SP)
  271.                 _FP68K
  272.                 ENDM
  273.  
  274.                 MACRO
  275.                 FMULS96
  276.                 MOVE.W        #FFSGL+FFEXT96+FOMUL,-(SP)
  277.                 _FP68K
  278.                 ENDM
  279.  
  280.                 MACRO
  281.                 FMULC96
  282.                 MOVE.W        #FFCOMP+FFEXT96+FOMUL,-(SP)
  283.                 _FP68K
  284.                 ENDM
  285.  
  286.                 MACRO
  287.                 FMULI96
  288.                 MOVE.W        #FFINT+FFEXT96+FOMUL,-(SP)
  289.                 _FP68K
  290.                 ENDM
  291.  
  292.                 MACRO
  293.                 FMULL96
  294.                 MOVE.W        #FFLNG+FFEXT96+FOMUL,-(SP)
  295.                 _FP68K
  296.                 ENDM
  297.  
  298. ;———————————————————————————————————————————————————————————
  299. ; Division.
  300. ;———————————————————————————————————————————————————————————
  301. ; 80-bit extended format
  302.                 MACRO
  303.                 FDIVX
  304.                 MOVE.W        #FFEXT+FODIV,-(SP)
  305.                 _FP68K
  306.                 ENDM
  307.  
  308.                 MACRO
  309.                 FDIVD
  310.                 MOVE.W        #FFDBL+FODIV,-(SP)
  311.                 _FP68K
  312.                 ENDM
  313.  
  314.                 MACRO
  315.                 FDIVS
  316.                 MOVE.W        #FFSGL+FODIV,-(SP)
  317.                 _FP68K
  318.                 ENDM
  319.  
  320.                 MACRO
  321.                 FDIVC
  322.                 MOVE.W        #FFCOMP+FODIV,-(SP)
  323.                 _FP68K
  324.                 ENDM
  325.  
  326.                 MACRO
  327.                 FDIVI
  328.                 MOVE.W        #FFINT+FODIV,-(SP)
  329.                 _FP68K
  330.                 ENDM
  331.  
  332.                 MACRO
  333.                 FDIVL
  334.                 MOVE.W        #FFLNG+FODIV,-(SP)
  335.                 _FP68K
  336.                 ENDM
  337.  
  338. ; 96-bit extended format
  339.                 MACRO
  340.                 FDIVX96
  341.                 MOVE.W        #FFEXT96+FODIV,-(SP)
  342.                 _FP68K
  343.                 ENDM
  344.  
  345.                 MACRO
  346.                 FDIVD96
  347.                 MOVE.W        #FFDBL+FFEXT96+FODIV,-(SP)
  348.                 _FP68K
  349.                 ENDM
  350.  
  351.                 MACRO
  352.                 FDIVS96
  353.                 MOVE.W        #FFSGL+FFEXT96+FODIV,-(SP)
  354.                 _FP68K
  355.                 ENDM
  356.  
  357.                 MACRO
  358.                 FDIVC96
  359.                 MOVE.W        #FFCOMP+FFEXT96+FODIV,-(SP)
  360.                 _FP68K
  361.                 ENDM
  362.  
  363.                 MACRO
  364.                 FDIVI96
  365.                 MOVE.W        #FFINT+FFEXT96+FODIV,-(SP)
  366.                 _FP68K
  367.                 ENDM
  368.  
  369.                 MACRO
  370.                 FDIVL96
  371.                 MOVE.W        #FFLNG+FFEXT96+FODIV,-(SP)
  372.                 _FP68K
  373.                 ENDM
  374.  
  375. ;———————————————————————————————————————————————————————————
  376. ; Square root.
  377. ;———————————————————————————————————————————————————————————
  378. ; 80-bit extended format
  379.                 MACRO
  380.                 FSQRTX
  381.                 MOVE.W        #FOSQRT,-(SP)
  382.                 _FP68K
  383.                 ENDM
  384.  
  385. ; 96-bit extended format
  386.                 MACRO
  387.                 FSQRTX96
  388.                 MOVE.W        #FFEXT96+FOSQRT,-(SP)
  389.                 _FP68K
  390.                 ENDM
  391.  
  392. ;———————————————————————————————————————————————————————————
  393. ; Round to integer, according to the current rounding mode.
  394. ;———————————————————————————————————————————————————————————
  395. ; 80-bit extended format
  396.                 MACRO
  397.                 FRINTX
  398.                 MOVE.W        #FORTI,-(SP)
  399.                 _FP68K
  400.                 ENDM
  401.  
  402. ; 96-bit extended format
  403.                 MACRO
  404.                 FRINTX96
  405.                 MOVE.W        #FFEXT96+FORTI,-(SP)
  406.                 _FP68K
  407.                 ENDM
  408.  
  409. ;———————————————————————————————————————————————————————————
  410. ; Truncate to integer, using round toward zero.
  411. ;———————————————————————————————————————————————————————————
  412. ; 80-bit extended format
  413.                 MACRO
  414.                 FTINTX
  415.                 MOVE.W        #FOTTI,-(SP)
  416.                 _FP68K
  417.                 ENDM
  418.  
  419. ; 96-bit extended format
  420.                 MACRO
  421.                 FTINTX96
  422.                 MOVE.W        #FFEXT96+FOTTI,-(SP)
  423.                 _FP68K
  424.                 ENDM
  425.  
  426. ;———————————————————————————————————————————————————————————
  427. ; Remainder.
  428. ;———————————————————————————————————————————————————————————
  429. ; 80-bit extended format
  430.                 MACRO
  431.                 FREMX
  432.                 MOVE.W        #FFEXT+FOREM,-(SP)
  433.                 _FP68K
  434.                 ENDM
  435.  
  436.                 MACRO
  437.                 FREMD
  438.                 MOVE.W        #FFDBL+FOREM,-(SP)
  439.                 _FP68K
  440.                 ENDM
  441.  
  442.                 MACRO
  443.                 FREMS
  444.                 MOVE.W        #FFSGL+FOREM,-(SP)
  445.                 _FP68K
  446.                 ENDM
  447.  
  448.                 MACRO
  449.                 FREMC
  450.                 MOVE.W        #FFCOMP+FOREM,-(SP)
  451.                 _FP68K
  452.                 ENDM
  453.  
  454.                 MACRO
  455.                 FREMI
  456.                 MOVE.W        #FFINT+FOREM,-(SP)
  457.                 _FP68K
  458.                 ENDM
  459.  
  460.                 MACRO
  461.                 FREML
  462.                 MOVE.W        #FFLNG+FOREM,-(SP)
  463.                 _FP68K
  464.                 ENDM
  465.  
  466. ; 96-bit extended format
  467.                 MACRO
  468.                 FREMX96
  469.                 MOVE.W        #FFEXT96+FOREM,-(SP)
  470.                 _FP68K
  471.                 ENDM
  472.  
  473.                 MACRO
  474.                 FREMD96
  475.                 MOVE.W        #FFDBL+FFEXT96+FOREM,-(SP)
  476.                 _FP68K
  477.                 ENDM
  478.  
  479.                 MACRO
  480.                 FREMS96
  481.                 MOVE.W        #FFSGL+FFEXT96+FOREM,-(SP)
  482.                 _FP68K
  483.                 ENDM
  484.  
  485.                 MACRO
  486.                 FREMC96
  487.                 MOVE.W        #FFCOMP+FFEXT96+FOREM,-(SP)
  488.                 _FP68K
  489.                 ENDM
  490.  
  491.                 MACRO
  492.                 FREMI96
  493.                 MOVE.W        #FFINT+FFEXT96+FOREM,-(SP)
  494.                 _FP68K
  495.                 ENDM
  496.  
  497.                 MACRO
  498.                 FREML96
  499.                 MOVE.W        #FFLNG+FFEXT96+FOREM,-(SP)
  500.                 _FP68K
  501.                 ENDM
  502.  
  503. ;———————————————————————————————————————————————————————————
  504. ; Logb.
  505. ;———————————————————————————————————————————————————————————
  506. ; 80-bit extended format
  507.                 MACRO
  508.                 FLOGBX
  509.                 MOVE.W        #FOLOGB,-(SP)
  510.                 _FP68K
  511.                 ENDM
  512.  
  513. ; 96-bit extended format
  514.                 MACRO
  515.                 FLOGBX96
  516.                 MOVE.W        #FFEXT96+FOLOGB,-(SP)
  517.                 _FP68K
  518.                 ENDM
  519.  
  520. ;———————————————————————————————————————————————————————————
  521. ; Scalb.
  522. ;———————————————————————————————————————————————————————————
  523. ; 80-bit extended format
  524.                 MACRO
  525.                 FSCALBX
  526.                 MOVE.W        #FFINT+FOSCALB,-(SP)
  527.                 _FP68K
  528.                 ENDM
  529.  
  530. ; 96-bit extended format
  531.                 MACRO
  532.                 FSCALBX96
  533.                 MOVE.W        #FFINT+FFEXT96+FOSCALB,-(SP)
  534.                 _FP68K
  535.                 ENDM
  536.  
  537. ;———————————————————————————————————————————————————————————
  538. ; Copy-sign.
  539. ;———————————————————————————————————————————————————————————
  540. ; 80-bit extended format
  541.                 MACRO
  542.                 FCPYSGNX
  543.                 MOVE.W        #FOCPYSGN,-(SP)
  544.                 _FP68K
  545.                 ENDM
  546.  
  547. ; 96-bit extended format
  548.                 MACRO
  549.                 FCPYSGNX96
  550.                 MOVE.W        #FFEXT96+FOCPYSGN,-(SP)
  551.                 _FP68K
  552.                 ENDM
  553.  
  554. ;———————————————————————————————————————————————————————————
  555. ; Negate.
  556. ;———————————————————————————————————————————————————————————
  557. ; 80-bit extended format
  558.                 MACRO
  559.                 FNEGX
  560.                 MOVE.W        #FONEG,-(SP)
  561.                 _FP68K
  562.                 ENDM
  563.  
  564. ; 96-bit extended format
  565.                 MACRO
  566.                 FNEGX96
  567.                 MOVE.W        #FFEXT96+FONEG,-(SP)
  568.                 _FP68K
  569.                 ENDM
  570.  
  571. ;———————————————————————————————————————————————————————————
  572. ; Absolute value.
  573. ;———————————————————————————————————————————————————————————
  574. ; 80-bit extended format
  575.                 MACRO
  576.                 FABSX
  577.                 MOVE.W        #FOABS,-(SP)
  578.                 _FP68K
  579.                 ENDM
  580.  
  581. ; 96-bit extended format
  582.                 MACRO
  583.                 FABSX96
  584.                 MOVE.W        #FFEXT96+FOABS,-(SP)
  585.                 _FP68K
  586.                 ENDM
  587.  
  588. ;———————————————————————————————————————————————————————————
  589. ; Next-after. NOTE: both operands are of the same
  590. ; format, as specified by the usual suffix.
  591. ;———————————————————————————————————————————————————————————
  592.                 MACRO
  593.                 FNEXTS
  594.                 MOVE.W        #FFSGL+FONEXT,-(SP)
  595.                 _FP68K
  596.                 ENDM
  597.  
  598.                 MACRO
  599.                 FNEXTD
  600.                 MOVE.W        #FFDBL+FONEXT,-(SP)
  601.                 _FP68K
  602.                 ENDM
  603.  
  604. ; 80-bit extended format
  605.                 MACRO
  606.                 FNEXTX
  607.                 MOVE.W        #FFEXT+FONEXT,-(SP)
  608.                 _FP68K
  609.                 ENDM
  610.  
  611. ; 96-bit extended format
  612.                 MACRO
  613.                 FNEXTX96
  614.                 MOVE.W        #FFEXT96+FONEXT,-(SP)
  615.                 _FP68K
  616.                 ENDM
  617.  
  618. ;———————————————————————————————————————————————————————————
  619. ; Conversion to 80-bit extended.
  620. ;———————————————————————————————————————————————————————————
  621.                 MACRO
  622.                 FX2X
  623.                 MOVE.W        #FFEXT+FOZ2X,-(SP)
  624.                 _FP68K
  625.                 ENDM
  626.  
  627.                 MACRO
  628.                 FD2X
  629.                 MOVE.W        #FFDBL+FOZ2X,-(SP)
  630.                 _FP68K
  631.                 ENDM
  632.  
  633.                 MACRO
  634.                 FS2X
  635.                 MOVE.W        #FFSGL+FOZ2X,-(SP)
  636.                 _FP68K
  637.                 ENDM
  638.  
  639.                 MACRO
  640.                 FI2X
  641.                 MOVE.W        #FFINT+FOZ2X,-(SP)
  642.                 _FP68K
  643.                 ENDM
  644.  
  645.                 MACRO
  646.                 FL2X
  647.                 MOVE.W        #FFLNG+FOZ2X,-(SP)
  648.                 _FP68K
  649.                 ENDM
  650.  
  651.                 MACRO
  652.                 FC2X
  653.                 MOVE.W        #FFCOMP+FOZ2X,-(SP)
  654.                 _FP68K
  655.                 ENDM
  656.  
  657. ;———————————————————————————————————————————————————————————
  658. ; Conversion to 96-bit extended.
  659. ;———————————————————————————————————————————————————————————
  660.                 MACRO
  661.                 FX2X96
  662.                 MOVE.W        #FFEXT96+FOZ2X,-(SP)
  663.                 _FP68K
  664.                 ENDM
  665.  
  666.                 MACRO
  667.                 FD2X96
  668.                 MOVE.W        #FFDBL+FFEXT96+FOZ2X,-(SP)
  669.                 _FP68K
  670.                 ENDM
  671.  
  672.                 MACRO
  673.                 FS2X96
  674.                 MOVE.W        #FFSGL+FFEXT96+FOZ2X,-(SP)
  675.                 _FP68K
  676.                 ENDM
  677.  
  678.                 MACRO
  679.                 FI2X96
  680.                 MOVE.W        #FFINT+FFEXT96+FOZ2X,-(SP)
  681.                 _FP68K
  682.                 ENDM
  683.  
  684.                 MACRO
  685.                 FL2X96
  686.                 MOVE.W        #FFLNG+FFEXT96+FOZ2X,-(SP)
  687.                 _FP68K
  688.                 ENDM
  689.  
  690.                 MACRO
  691.                 FC2X96
  692.                 MOVE.W        #FFCOMP+FFEXT96+FOZ2X,-(SP)
  693.                 _FP68K
  694.                 ENDM
  695.  
  696. ;———————————————————————————————————————————————————————————
  697. ; Conversion from 80-bit extended.
  698. ;———————————————————————————————————————————————————————————
  699.                 MACRO
  700.                 FX2D
  701.                 MOVE.W        #FFDBL+FOX2Z,-(SP)
  702.                 _FP68K
  703.                 ENDM
  704.  
  705.                 MACRO
  706.                 FX2S
  707.                 MOVE.W        #FFSGL+FOX2Z,-(SP)
  708.                 _FP68K
  709.                 ENDM
  710.  
  711.                 MACRO
  712.                 FX2I
  713.                 MOVE.W        #FFINT+FOX2Z,-(SP)
  714.                 _FP68K
  715.                 ENDM
  716.  
  717.                 MACRO
  718.                 FX2L
  719.                 MOVE.W        #FFLNG+FOX2Z,-(SP)
  720.                 _FP68K
  721.                 ENDM
  722.  
  723.                 MACRO
  724.                 FX2C
  725.                 MOVE.W        #FFCOMP+FOX2Z,-(SP)
  726.                 _FP68K
  727.                 ENDM
  728.  
  729. ;———————————————————————————————————————————————————————————
  730. ; Conversion from 96-bit extended.
  731. ;———————————————————————————————————————————————————————————
  732.                 MACRO
  733.                 FX2D96
  734.                 MOVE.W        #FFDBL+FFEXT96+FOX2Z,-(SP)
  735.                 _FP68K
  736.                 ENDM
  737.  
  738.                 MACRO
  739.                 FX2S96
  740.                 MOVE.W        #FFSGL+FFEXT96+FOX2Z,-(SP)
  741.                 _FP68K
  742.                 ENDM
  743.  
  744.                 MACRO
  745.                 FX2I96
  746.                 MOVE.W        #FFINT+FFEXT96+FOX2Z,-(SP)
  747.                 _FP68K
  748.                 ENDM
  749.  
  750.                 MACRO
  751.                 FX2L96
  752.                 MOVE.W        #FFLNG+FFEXT96+FOX2Z,-(SP)
  753.                 _FP68K
  754.                 ENDM
  755.  
  756.                 MACRO
  757.                 FX2C96
  758.                 MOVE.W        #FFCOMP+FFEXT96+FOX2Z,-(SP)
  759.                 _FP68K
  760.                 ENDM
  761.  
  762. ;———————————————————————————————————————————————————————————
  763. ; Binary to decimal conversion.
  764. ;———————————————————————————————————————————————————————————
  765. ; 80-bit extended format
  766.                 MACRO
  767.                 FX2DEC
  768.                 MOVE.W        #FFEXT+FOB2D,-(SP)
  769.                 _FP68K
  770.                 ENDM
  771.  
  772. ; 96-bit extended format
  773.                 MACRO
  774.                 FX2DEC96
  775.                 MOVE.W        #FFEXT96+FOB2D,-(SP)
  776.                 _FP68K
  777.                 ENDM
  778.  
  779.                 MACRO
  780.                 FD2DEC
  781.                 MOVE.W        #FFDBL+FOB2D,-(SP)
  782.                 _FP68K
  783.                 ENDM
  784.  
  785.                 MACRO
  786.                 FS2DEC
  787.                 MOVE.W        #FFSGL+FOB2D,-(SP)
  788.                 _FP68K
  789.                 ENDM
  790.  
  791.                 MACRO
  792.                 FC2DEC
  793.                 MOVE.W        #FFCOMP+FOB2D,-(SP)
  794.                 _FP68K
  795.                 ENDM
  796.  
  797.                 MACRO
  798.                 FI2DEC
  799.                 MOVE.W        #FFINT+FOB2D,-(SP)
  800.                 _FP68K
  801.                 ENDM
  802.  
  803.                 MACRO
  804.                 FL2DEC
  805.                 MOVE.W        #FFLNG+FOB2D,-(SP)
  806.                 _FP68K
  807.                 ENDM
  808.  
  809. ;———————————————————————————————————————————————————————————
  810. ; Decimal to binary conversion.
  811. ;———————————————————————————————————————————————————————————
  812. ; 80-bit extended format
  813.                 MACRO
  814.                 FDEC2X
  815.                 MOVE.W        #FFEXT+FOD2B,-(SP)
  816.                 _FP68K
  817.                 ENDM
  818.  
  819. ; 96-bit extended format
  820.                 MACRO
  821.                 FDEC2X96
  822.                 MOVE.W        #FFEXT96+FOD2B,-(SP)
  823.                 _FP68K
  824.                 ENDM
  825.  
  826.                 MACRO
  827.                 FDEC2D
  828.                 MOVE.W        #FFDBL+FOD2B,-(SP)
  829.                 _FP68K
  830.                 ENDM
  831.  
  832.                 MACRO
  833.                 FDEC2S
  834.                 MOVE.W        #FFSGL+FOD2B,-(SP)
  835.                 _FP68K
  836.                 ENDM
  837.  
  838.                 MACRO
  839.                 FDEC2C
  840.                 MOVE.W        #FFCOMP+FOD2B,-(SP)
  841.                 _FP68K
  842.                 ENDM
  843.  
  844.                 MACRO
  845.                 FDEC2I
  846.                 MOVE.W        #FFINT+FOD2B,-(SP)
  847.                 _FP68K
  848.                 ENDM
  849.  
  850.                 MACRO
  851.                 FDEC2L
  852.                 MOVE.W        #FFLNG+FOD2B,-(SP)
  853.                 _FP68K
  854.                 ENDM
  855.  
  856. ;———————————————————————————————————————————————————————————
  857. ; Compare, not signaling invalid on unordered.
  858. ;———————————————————————————————————————————————————————————
  859. ; 80-bit extended format
  860.                 MACRO
  861.                 FCMPX
  862.                 MOVE.W        #FFEXT+FOCMP,-(SP)
  863.                 _FP68K
  864.                 ENDM
  865.  
  866.                 MACRO
  867.                 FCMPD
  868.                 MOVE.W        #FFDBL+FOCMP,-(SP)
  869.                 _FP68K
  870.                 ENDM
  871.  
  872.                 MACRO
  873.                 FCMPS
  874.                 MOVE.W        #FFSGL+FOCMP,-(SP)
  875.                 _FP68K
  876.                 ENDM
  877.  
  878.                 MACRO
  879.                 FCMPC
  880.                 MOVE.W        #FFCOMP+FOCMP,-(SP)
  881.                 _FP68K
  882.                 ENDM
  883.  
  884.                 MACRO
  885.                 FCMPI
  886.                 MOVE.W        #FFINT+FOCMP,-(SP)
  887.                 _FP68K
  888.                 ENDM
  889.  
  890.                 MACRO
  891.                 FCMPL
  892.                 MOVE.W        #FFLNG+FOCMP,-(SP)
  893.                 _FP68K
  894.                 ENDM
  895.  
  896. ; 96-bit extended format
  897.                 MACRO
  898.                 FCMPX96
  899.                 MOVE.W        #FFEXT96+FOCMP,-(SP)
  900.                 _FP68K
  901.                 ENDM
  902.  
  903.                 MACRO
  904.                 FCMPD96
  905.                 MOVE.W        #FFDBL+FFEXT96+FOCMP,-(SP)
  906.                 _FP68K
  907.                 ENDM
  908.  
  909.                 MACRO
  910.                 FCMPS96
  911.                 MOVE.W        #FFSGL+FFEXT96+FOCMP,-(SP)
  912.                 _FP68K
  913.                 ENDM
  914.  
  915.                 MACRO
  916.                 FCMPC96
  917.                 MOVE.W        #FFCOMP+FFEXT96+FOCMP,-(SP)
  918.                 _FP68K
  919.                 ENDM
  920.  
  921.                 MACRO
  922.                 FCMPI96
  923.                 MOVE.W        #FFINT+FFEXT96+FOCMP,-(SP)
  924.                 _FP68K
  925.                 ENDM
  926.  
  927.                 MACRO
  928.                 FCMPL96
  929.                 MOVE.W        #FFLNG+FFEXT96+FOCMP,-(SP)
  930.                 _FP68K
  931.                 ENDM
  932.  
  933. ;———————————————————————————————————————————————————————————
  934. ; Compare, signaling invalid on unordered.
  935. ;———————————————————————————————————————————————————————————
  936. ; 80-bit extended format
  937.                 MACRO
  938.                 FCPXX
  939.                 MOVE.W        #FFEXT+FOCPX,-(SP)
  940.                 _FP68K
  941.                 ENDM
  942.  
  943.                 MACRO
  944.                 FCPXD
  945.                 MOVE.W        #FFDBL+FOCPX,-(SP)
  946.                 _FP68K
  947.                 ENDM
  948.  
  949.                 MACRO
  950.                 FCPXS
  951.                 MOVE.W        #FFSGL+FOCPX,-(SP)
  952.                 _FP68K
  953.                 ENDM
  954.  
  955.                 MACRO
  956.                 FCPXC
  957.                 MOVE.W        #FFCOMP+FOCPX,-(SP)
  958.                 _FP68K
  959.                 ENDM
  960.  
  961.                 MACRO
  962.                 FCPXI
  963.                 MOVE.W        #FFINT+FOCPX,-(SP)
  964.                 _FP68K
  965.                 ENDM
  966.  
  967.                 MACRO
  968.                 FCPXL
  969.                 MOVE.W        #FFLNG+FOCPX,-(SP)
  970.                 _FP68K
  971.                 ENDM
  972.  
  973. ; 96-bit extended format
  974.                 MACRO
  975.                 FCPXX96
  976.                 MOVE.W        #FFEXT96+FOCPX,-(SP)
  977.                 _FP68K
  978.                 ENDM
  979.  
  980.                 MACRO
  981.                 FCPXD96
  982.                 MOVE.W        #FFDBL+FFEXT96+FOCPX,-(SP)
  983.                 _FP68K
  984.                 ENDM
  985.  
  986.                 MACRO
  987.                 FCPXS96
  988.                 MOVE.W        #FFSGL+FFEXT96+FOCPX,-(SP)
  989.                 _FP68K
  990.                 ENDM
  991.  
  992.                 MACRO
  993.                 FCPXC96
  994.                 MOVE.W        #FFCOMP+FFEXT96+FOCPX,-(SP)
  995.                 _FP68K
  996.                 ENDM
  997.  
  998.                 MACRO
  999.                 FCPXI96
  1000.                 MOVE.W        #FFINT+FFEXT96+FOCPX,-(SP)
  1001.                 _FP68K
  1002.                 ENDM
  1003.  
  1004.                 MACRO
  1005.                 FCPXL96
  1006.                 MOVE.W        #FFLNG+FFEXT96+FOCPX,-(SP)
  1007.                 _FP68K
  1008.                 ENDM
  1009.  
  1010. ;———————————————————————————————————————————————————————————
  1011. ; The following defines a set of so-called floating
  1012. ; branches. They presume that an appropriate compare
  1013. ; operation, FCMPz, FCMPz96, FCPXz or FCPXz96, precedes.
  1014. ;———————————————————————————————————————————————————————————
  1015.                 MACRO
  1016.                 FBEQL
  1017.                 BEQ         &SYSLIST[1]
  1018.                 ENDM
  1019.  
  1020.                 MACRO
  1021.                 FBLTL
  1022.                 BCS         &SYSLIST[1]
  1023.                 ENDM
  1024.  
  1025.                 MACRO
  1026.                 FBLEL
  1027.                 BLS         &SYSLIST[1]
  1028.                 ENDM
  1029.  
  1030.                 MACRO
  1031.                 FBGTL
  1032.                 BGT         &SYSLIST[1]
  1033.                 ENDM
  1034.  
  1035.                 MACRO
  1036.                 FBGEL
  1037.                 BGE         &SYSLIST[1]
  1038.                 ENDM
  1039.  
  1040.                 MACRO
  1041.                 FBULTL
  1042.                 BLT         &SYSLIST[1]
  1043.                 ENDM
  1044.  
  1045.                 MACRO
  1046.                 FBULEL
  1047.                 BLE         &SYSLIST[1]
  1048.                 ENDM
  1049.  
  1050.                 MACRO
  1051.                 FBUGTL
  1052.                 BHI         &SYSLIST[1]
  1053.                 ENDM
  1054.  
  1055.                 MACRO
  1056.                 FBUGEL
  1057.                 BCC         &SYSLIST[1]
  1058.                 ENDM
  1059.  
  1060.                 MACRO
  1061.                 FBUL
  1062.                 BVS         &SYSLIST[1]
  1063.                 ENDM
  1064.  
  1065.                 MACRO
  1066.                 FBOL
  1067.                 BVC         &SYSLIST[1]
  1068.                 ENDM
  1069.  
  1070.                 MACRO
  1071.                 FBNEL
  1072.                 BNE         &SYSLIST[1]
  1073.                 ENDM
  1074.  
  1075.                 MACRO
  1076.                 FBUEL
  1077.                 BEQ         &SYSLIST[1]
  1078.                 BVS         &SYSLIST[1]
  1079.                 ENDM
  1080.  
  1081.                 MACRO
  1082.                 FBLGL
  1083.                 BCS         &SYSLIST[1]
  1084.                 BGT         &SYSLIST[1]
  1085.                 ENDM
  1086.  
  1087. ;———————————————————————————————————————————————————————————
  1088. ; Short branch versions.
  1089. ;———————————————————————————————————————————————————————————
  1090.                 MACRO
  1091.                 FBEQS
  1092.                 BEQ.S        &SYSLIST[1]
  1093.                 ENDM
  1094.  
  1095.                 MACRO
  1096.                 FBLTS
  1097.                 BCS.S        &SYSLIST[1]
  1098.                 ENDM
  1099.  
  1100.                 MACRO
  1101.                 FBLES
  1102.                 BLS.S        &SYSLIST[1]
  1103.                 ENDM
  1104.  
  1105.                 MACRO
  1106.                 FBGTS
  1107.                 BGT.S        &SYSLIST[1]
  1108.                 ENDM
  1109.  
  1110.                 MACRO
  1111.                 FBGES
  1112.                 BGE.S        &SYSLIST[1]
  1113.                 ENDM
  1114.  
  1115.                 MACRO
  1116.                 FBULTS
  1117.                 BLT.S        &SYSLIST[1]
  1118.                 ENDM
  1119.  
  1120.                 MACRO
  1121.                 FBULES
  1122.                 BLE.S        &SYSLIST[1]
  1123.                 ENDM
  1124.  
  1125.                 MACRO
  1126.                 FBUGTS
  1127.                 BHI.S        &SYSLIST[1]
  1128.                 ENDM
  1129.  
  1130.                 MACRO
  1131.                 FBUGES
  1132.                 BCC.S        &SYSLIST[1]
  1133.                 ENDM
  1134.  
  1135.                 MACRO
  1136.                 FBUS
  1137.                 BVS.S        &SYSLIST[1]
  1138.                 ENDM
  1139.  
  1140.                 MACRO
  1141.                 FBOS
  1142.                 BVC.S        &SYSLIST[1]
  1143.                 ENDM
  1144.  
  1145.                 MACRO
  1146.                 FBNES
  1147.                 BNE.S        &SYSLIST[1]
  1148.                 ENDM
  1149.  
  1150.                 MACRO
  1151.                 FBUES
  1152.                 BEQ.S        &SYSLIST[1]
  1153.                 BVS.S        &SYSLIST[1]
  1154.                 ENDM
  1155.  
  1156.                 MACRO
  1157.                 FBLGS
  1158.                 BCS.S        &SYSLIST[1]
  1159.                 BGT.S        &SYSLIST[1]
  1160.                 ENDM
  1161.  
  1162. ;———————————————————————————————————————————————————————————
  1163. ; Class and sign inquiries.
  1164. ;———————————————————————————————————————————————————————————
  1165. FCSNAN            EQU         1                        ; signaling NAN
  1166. FCQNAN            EQU         2                        ; quiet NAN
  1167. FCINF            EQU         3                        ; infinity
  1168. FCZERO            EQU         4                        ; zero
  1169. FCNORM            EQU         5                        ; normal number
  1170. FCDENORM        EQU         6                        ; denormal number
  1171.  
  1172.                 MACRO
  1173.                 FCLASSC
  1174.                 MOVE.W        #FFCOMP+FOCLASS,-(SP)
  1175.                 _FP68K
  1176.                 ENDM
  1177.  
  1178.                 MACRO
  1179.                 FCLASSS
  1180.                 MOVE.W        #FFSGL+FOCLASS,-(SP)
  1181.                 _FP68K
  1182.                 ENDM
  1183.  
  1184.                 MACRO
  1185.                 FCLASSD
  1186.                 MOVE.W        #FFDBL+FOCLASS,-(SP)
  1187.                 _FP68K
  1188.                 ENDM
  1189.  
  1190. ; 80-bit extended format
  1191.                 MACRO
  1192.                 FCLASSX
  1193.                 MOVE.W        #FFEXT+FOCLASS,-(SP)
  1194.                 _FP68K
  1195.                 ENDM
  1196.  
  1197. ; 96-bit extended format
  1198.                 MACRO
  1199.                 FCLASSX96
  1200.                 MOVE.W        #FFEXT96+FOCLASS,-(SP)
  1201.                 _FP68K
  1202.                 ENDM
  1203.  
  1204. ;———————————————————————————————————————————————————————————
  1205. ; Bit indexes for bytes of floating point environment word.
  1206. ;———————————————————————————————————————————————————————————
  1207. FBINVALID        EQU         0                        ; invalid operation
  1208. FBUFLOW         EQU         1                        ; underflow
  1209. FBOFLOW         EQU         2                        ; overflow
  1210. FBDIVZER        EQU         3                        ; division by zero
  1211. FBINEXACT        EQU         4                        ; inexact
  1212. FBRNDLO         EQU         5                        ; low bit of rounding mode
  1213. FBRNDHI         EQU         6                        ; high bit of rounding mode
  1214. FBLSTRND        EQU         7                        ; last round result bit
  1215. FBDBL            EQU         5                        ; double precision control
  1216. FBSGL            EQU         6                        ; single precision control
  1217.  
  1218. ;———————————————————————————————————————————————————————————
  1219. ; Get and set environment.
  1220. ;———————————————————————————————————————————————————————————
  1221.                 MACRO
  1222.                 FGETENV
  1223.                 MOVE.W        #FOGETENV,-(SP)
  1224.                 _FP68K
  1225.                 ENDM
  1226.  
  1227.                 MACRO
  1228.                 FSETENV
  1229.                 MOVE.W        #FOSETENV,-(SP)
  1230.                 _FP68K
  1231.                 ENDM
  1232.  
  1233. ;———————————————————————————————————————————————————————————
  1234. ; Test and set exception.
  1235. ;———————————————————————————————————————————————————————————
  1236.                 MACRO
  1237.                 FTESTXCP
  1238.                 MOVE.W        #FOTESTXCP,-(SP)
  1239.                 _FP68K
  1240.                 ENDM
  1241.  
  1242.                 MACRO
  1243.                 FSETXCP
  1244.                 MOVE.W        #FOSETXCP,-(SP)
  1245.                 _FP68K
  1246.                 ENDM
  1247.  
  1248. ;———————————————————————————————————————————————————————————
  1249. ; Procedure entry and exit.
  1250. ;———————————————————————————————————————————————————————————
  1251.                 MACRO
  1252.                 FPROCENTRY
  1253.                 MOVE.W        #FOPROCENTRY,-(SP)
  1254.                 _FP68K
  1255.                 ENDM
  1256.  
  1257.                 MACRO
  1258.                 FPROCEXIT
  1259.                 MOVE.W        #FOPROCEXIT,-(SP)
  1260.                 _FP68K
  1261.                 ENDM
  1262.  
  1263. ;———————————————————————————————————————————————————————————
  1264. ; Get and set halt vector.
  1265. ;———————————————————————————————————————————————————————————
  1266.                 MACRO
  1267.                 FGETHV
  1268.                 MOVE.W        #FOGETHV,-(SP)
  1269.                 _FP68K
  1270.                 ENDM
  1271.  
  1272.                 MACRO
  1273.                 FSETHV
  1274.                 MOVE.W        #FOSETHV,-(SP)
  1275.                 _FP68K
  1276.                 ENDM
  1277.  
  1278.  
  1279.  
  1280. ;———————————————————————————————————————————————————————————
  1281. ; Elementary function operation code masks.
  1282. ;———————————————————————————————————————————————————————————
  1283. ELEXT96            EQU            $0080                    ; 96-bit extended format
  1284. FOLNX            EQU         $0000                    ; base-e log
  1285. FOLOG2X         EQU         $0002                    ; base-2 log
  1286. FOLN1X            EQU         $0004                    ; ln (1 + x)
  1287. FOLOG21X        EQU         $0006                    ; log2 (1 + x)
  1288. FOEXPX            EQU         $0008                    ; base-e exponential
  1289. FOEXP2X         EQU         $000A                    ; base-2 exponential
  1290. FOEXP1X         EQU         $000C                    ; exp (x) - 1
  1291. FOEXP21X        EQU         $000E                    ; exp2 (x) - 1
  1292. FOXPWRI         EQU         $8010                    ; integer exponentiation
  1293. FOXPWRY         EQU         $8012                    ; general exponentiation
  1294. FOCOMPOUND        EQU         $C014                    ; compound
  1295. FOANNUITY        EQU         $C016                    ; annuity
  1296. FOSINX            EQU         $0018                    ; sine
  1297. FOCOSX            EQU         $001A                    ; cosine
  1298. FOTANX            EQU         $001C                    ; tangent
  1299. FOATANX         EQU         $001E                    ; arctangent
  1300. FORANDX         EQU         $0020                    ; random
  1301.  
  1302. ;———————————————————————————————————————————————————————————
  1303. ; Elementary functions.
  1304. ;———————————————————————————————————————————————————————————
  1305. ; 80-bit extended format
  1306.                 MACRO
  1307.                 FLNX                                ; base-e log
  1308.                 MOVE.W        #FOLNX,-(SP)
  1309.                 _ELEMS68K
  1310.                 ENDM
  1311.  
  1312.                 MACRO
  1313.                 FLOG2X                                ; base-2 log
  1314.                 MOVE.W        #FOLOG2X,-(SP)
  1315.                 _ELEMS68K
  1316.                 ENDM
  1317.  
  1318.                 MACRO
  1319.                 FLN1X                                ; ln (1 + x)
  1320.                 MOVE.W        #FOLN1X,-(SP)
  1321.                 _ELEMS68K
  1322.                 ENDM
  1323.  
  1324.                 MACRO
  1325.                 FLOG21X                             ; log2 (1 + x)
  1326.                 MOVE.W        #FOLOG21X,-(SP)
  1327.                 _ELEMS68K
  1328.                 ENDM
  1329.  
  1330.                 MACRO
  1331.                 FEXPX                                ; base-e exponential
  1332.                 MOVE.W        #FOEXPX,-(SP)
  1333.                 _ELEMS68K
  1334.                 ENDM
  1335.  
  1336.                 MACRO
  1337.                 FEXP2X                                ; base-2 exponential
  1338.                 MOVE.W        #FOEXP2X,-(SP)
  1339.                 _ELEMS68K
  1340.                 ENDM
  1341.  
  1342.                 MACRO
  1343.                 FEXP1X                                ; exp (x) - 1
  1344.                 MOVE.W        #FOEXP1X,-(SP)
  1345.                 _ELEMS68K
  1346.                 ENDM
  1347.  
  1348.                 MACRO
  1349.                 FEXP21X                             ; exp2 (x) - 1
  1350.                 MOVE.W        #FOEXP21X,-(SP)
  1351.                 _ELEMS68K
  1352.                 ENDM
  1353.  
  1354.                 MACRO
  1355.                 FXPWRI                                ; integer exponential
  1356.                 MOVE.W        #FOXPWRI,-(SP)
  1357.                 _ELEMS68K
  1358.                 ENDM
  1359.  
  1360.                 MACRO
  1361.                 FXPWRY                                ; general exponential
  1362.                 MOVE.W        #FOXPWRY,-(SP)
  1363.                 _ELEMS68K
  1364.                 ENDM
  1365.  
  1366.                 MACRO
  1367.                 FCOMPOUND                            ; compound
  1368.                 MOVE.W        #FOCOMPOUND,-(SP)
  1369.                 _ELEMS68K
  1370.                 ENDM
  1371.  
  1372.                 MACRO
  1373.                 FANNUITY                            ; annuity
  1374.                 MOVE.W        #FOANNUITY,-(SP)
  1375.                 _ELEMS68K
  1376.                 ENDM
  1377.  
  1378.                 MACRO
  1379.                 FSINX                                ; sine
  1380.                 MOVE.W        #FOSINX,-(SP)
  1381.                 _ELEMS68K
  1382.                 ENDM
  1383.  
  1384.                 MACRO
  1385.                 FCOSX                                ; cosine
  1386.                 MOVE.W        #FOCOSX,-(SP)
  1387.                 _ELEMS68K
  1388.                 ENDM
  1389.  
  1390.                 MACRO
  1391.                 FTANX                                ; tangent
  1392.                 MOVE.W        #FOTANX,-(SP)
  1393.                 _ELEMS68K
  1394.                 ENDM
  1395.  
  1396.                 MACRO
  1397.                 FATANX                                ; arctangent
  1398.                 MOVE.W        #FOATANX,-(SP)
  1399.                 _ELEMS68K
  1400.                 ENDM
  1401.  
  1402.                 MACRO
  1403.                 FRANDX                                ; random number generator
  1404.                 MOVE.W        #FORANDX,-(SP)
  1405.                 _ELEMS68K
  1406.                 ENDM
  1407.  
  1408. ; 96-bit extended format
  1409.                 MACRO
  1410.                 FLNX96                                ; base-e log
  1411.                 MOVE.W        #ELEXT96+FOLNX,-(SP)
  1412.                 _ELEMS68K
  1413.                 ENDM
  1414.  
  1415.                 MACRO
  1416.                 FLOG2X96                                ; base-2 log
  1417.                 MOVE.W        #ELEXT96+FOLOG2X,-(SP)
  1418.                 _ELEMS68K
  1419.                 ENDM
  1420.  
  1421.                 MACRO
  1422.                 FLN1X96                                ; ln (1 + x)
  1423.                 MOVE.W        #ELEXT96+FOLN1X,-(SP)
  1424.                 _ELEMS68K
  1425.                 ENDM
  1426.  
  1427.                 MACRO
  1428.                 FLOG21X96                             ; log2 (1 + x)
  1429.                 MOVE.W        #ELEXT96+FOLOG21X,-(SP)
  1430.                 _ELEMS68K
  1431.                 ENDM
  1432.  
  1433.                 MACRO
  1434.                 FEXPX96                                ; base-e exponential
  1435.                 MOVE.W        #ELEXT96+FOEXPX,-(SP)
  1436.                 _ELEMS68K
  1437.                 ENDM
  1438.  
  1439.                 MACRO
  1440.                 FEXP2X96                                ; base-2 exponential
  1441.                 MOVE.W        #ELEXT96+FOEXP2X,-(SP)
  1442.                 _ELEMS68K
  1443.                 ENDM
  1444.  
  1445.                 MACRO
  1446.                 FEXP1X96                                ; exp (x) - 1
  1447.                 MOVE.W        #ELEXT96+FOEXP1X,-(SP)
  1448.                 _ELEMS68K
  1449.                 ENDM
  1450.  
  1451.                 MACRO
  1452.                 FEXP21X96                             ; exp2 (x) - 1
  1453.                 MOVE.W        #ELEXT96+FOEXP21X,-(SP)
  1454.                 _ELEMS68K
  1455.                 ENDM
  1456.  
  1457.                 MACRO
  1458.                 FXPWRI96                                ; integer exponential
  1459.                 MOVE.W        #ELEXT96+FOXPWRI,-(SP)
  1460.                 _ELEMS68K
  1461.                 ENDM
  1462.  
  1463.                 MACRO
  1464.                 FXPWRY96                                ; general exponential
  1465.                 MOVE.W        #ELEXT96+FOXPWRY,-(SP)
  1466.                 _ELEMS68K
  1467.                 ENDM
  1468.  
  1469.                 MACRO
  1470.                 FCOMPOUND96                            ; compound
  1471.                 MOVE.W        #ELEXT96+FOCOMPOUND,-(SP)
  1472.                 _ELEMS68K
  1473.                 ENDM
  1474.  
  1475.                 MACRO
  1476.                 FANNUITY96                            ; annuity
  1477.                 MOVE.W        #ELEXT96+FOANNUITY,-(SP)
  1478.                 _ELEMS68K
  1479.                 ENDM
  1480.  
  1481.                 MACRO
  1482.                 FSINX96                                ; sine
  1483.                 MOVE.W        #ELEXT96+FOSINX,-(SP)
  1484.                 _ELEMS68K
  1485.                 ENDM
  1486.  
  1487.                 MACRO
  1488.                 FCOSX96                                ; cosine
  1489.                 MOVE.W        #ELEXT96+FOCOSX,-(SP)
  1490.                 _ELEMS68K
  1491.                 ENDM
  1492.  
  1493.                 MACRO
  1494.                 FTANX96                                ; tangent
  1495.                 MOVE.W        #ELEXT96+FOTANX,-(SP)
  1496.                 _ELEMS68K
  1497.                 ENDM
  1498.  
  1499.                 MACRO
  1500.                 FATANX96                                ; arctangent
  1501.                 MOVE.W        #ELEXT96+FOATANX,-(SP)
  1502.                 _ELEMS68K
  1503.                 ENDM
  1504.  
  1505.                 MACRO
  1506.                 FRANDX96                                ; random number generator
  1507.                 MOVE.W        #ELEXT96+FORANDX,-(SP)
  1508.                 _ELEMS68K
  1509.                 ENDM
  1510.  
  1511. ;———————————————————————————————————————————————————————————
  1512. ; Scanner and formatter operation code masks
  1513. ;———————————————————————————————————————————————————————————
  1514.  
  1515. FOPSTR2DEC        EQU         $0002                    ;Pascal string to decimal record
  1516. FOCSTR2DEC        EQU         $0004                    ;C string to decimal record
  1517. FODEC2STR        EQU         $0003                    ;decimal record to Pascal string
  1518.  
  1519. ;———————————————————————————————————————————————————————————
  1520. ; Scanner and formatter functions
  1521. ;———————————————————————————————————————————————————————————
  1522.  
  1523. ;Pascal string to decimal record
  1524.  
  1525.                 MACRO
  1526.                 FPSTR2DEC
  1527.                 MOVE.W        #FOPSTR2DEC, -(SP)
  1528.                 _DecStr68K
  1529.                 ENDM
  1530.  
  1531. ;C string to decimal record
  1532.  
  1533.                 MACRO
  1534.                 FCSTR2DEC
  1535.                 MOVE.W        #FOCSTR2DEC, -(SP)
  1536.                 _DecStr68K
  1537.                 ENDM
  1538.  
  1539. ;decimal record to Pascal string
  1540.  
  1541.                 MACRO
  1542.                 FDEC2STR
  1543.                 MOVE.W        #FODEC2STR, -(SP)
  1544.                 _DecStr68K
  1545.                 ENDM
  1546.  
  1547.  
  1548.  
  1549. ;———————————————————————————————————————————————————————————
  1550. ; NaN codes.
  1551. ;———————————————————————————————————————————————————————————
  1552. NANSQRT         EQU         1                        ; Invalid square root such as sqrt(-1).
  1553. NANADD            EQU         2                        ; Invalid addition such as +INF - +INF.
  1554. NANDIV            EQU         4                        ; Invalid division such as 0/0.
  1555. NANMUL            EQU         8                        ; Invalid multiply such as 0 * INF.
  1556. NANREM            EQU         9                        ; Invalid remainder or mod such as x REM 0.
  1557. NANASCBIN        EQU         17                        ; Attempt to convert invalid ASCII string.
  1558. NANCOMP         EQU         20                        ; Result of converting comp NaN to floating.
  1559. NANZERO         EQU         21                        ; Attempt to create a NaN with a zero code.
  1560. NANTRIG         EQU         33                        ; Invalid argument to trig routine.
  1561. NANINVTRIG        EQU         34                        ; Invalid argument to inverse trig routine.
  1562. NANLOG            EQU         36                        ; Invalid argument to log routine.
  1563. NANPOWER        EQU         37                        ; Invalid argument to x^i or x^y routine.
  1564. NANFINAN        EQU         38                        ; Invalid argument to financial function.
  1565. NANINIT         EQU         255                     ; Uninitialized storage.
  1566.